#include "public.hpp"

int main()
{
    // 1.以读方式打开命名管道
    int rfd = open(pipename.c_str(), O_RDONLY);
    if (rfd < 0)
    {
        std::cerr << errno << ":" << strerror(errno) << std::endl;
        return 1;
    }
    std::cout << "open fifo success!!" << std::endl;

    // 2.读取管道中的数据
    // char buf[NUM] = {0};
    // while (true)
    // {
    //     int cnt = read(rfd, buf, sizeof(buf));
    //     if (cnt > 0)
    //     {
    //         buf[cnt] = '\0';
    //         std::cout << "message from client: " << buf << std::endl;
    //     }
    //     else if (cnt == 0)
    //     {
    //         std::cout << "通信结束" << std::endl;
    //         break;
    //     }
    //     else
    //     {
    //         return 1;
    //     }
    // }

    char buf[NUM] = {0};
    std::cout << "wait read..." << std::endl;
    int cnt = read(rfd, buf, sizeof(buf));
    std::cout << "read success!!" << std::endl;

    if (cnt > 0)
    {
        buf[cnt] = '\0';
        std::cout << "I am B, message from A: " << buf << std::endl;
    }
    else if (cnt == 0)
    {
        std::cout << "通信结束" << std::endl;
    }
    else
    {
        return 1;
    }

    // 3.关闭读端
    close(rfd);

    return 0;
}